<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!--
        https://www.jianshu.com/p/cc0ac7845ded

          ① input需要隐藏，因为我们并不需要显示它，但它却是实现Tab切换的核心力量
② “input:checked+label” 表示被选中的单选框后的 label 元素需要做标记
③ .content 元素需要先全部隐藏
③ “input:checked~.content” 表示被选中的单选框后的 .content 元素需要显示

    -->
    <!--HTML-->
    <ul>
        <li>
            <input id="tab1" type="radio" name="tab" checked>
            <label for="tab1">选项一</label>
            <div class="content">选项一内容</div>
        </li>
        <li>
            <input id="tab2" type="radio" name="tab">
            <label for="tab2">选项二</label>
            <div class="content">选项二内容</div>
        </li>
        <li>
            <input id="tab3" type="radio" name="tab">
            <label for="tab3">选项三</label>
            <div class="content">选项三内容</div>
        </li>
    </ul>

    <!--
        ① label需要绑定input，方法就是label的for属性值与input的id一致，这样当点击label元素时input单选框就会被选中
② input、label和div三者是有顺序的，不能随意调换顺序（原因后面你就知道了）
    -->
    <style>
        /*CSS*/
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            position: relative;
            width: 300px;
            margin: 100px auto;
        }

        ul li {
            list-style: none;
        }

        ul li input {
            display: none;
        }

        ul li label {
            float: left;
            width: 100px;
            text-align: center;
            line-height: 30px;
            border: 1px solid #000;
            border-right: 0;
            box-sizing: border-box;
            cursor: pointer;
            transition: all .3s;
        }

        ul li input:checked+label {
            color: #fff;
            background-color: #000;
        }

        ul li:last-child label {
            border-right: 1px solid #000;
        }

        ul li .content {
            opacity: 0;
            visibility: hidden;
            position: absolute;
            left: 0;
            top: 31px;
            width: 100%;
            height: 300px;
            border: 1px solid #000;
            box-sizing: border-box;
            font-size: 24px;
            text-align: center;
            line-height: 300px;
            color: #fff;
            transition: all .3s;
        }

        ul li:nth-child(1) .content {
            background-color: #0f0;
        }

        ul li:nth-child(2) .content {
            background-color: #00f;
        }

        ul li:nth-child(3) .content {
            background-color: #f0f;
        }

        ul li input:checked~.content {
            opacity: 1;
            visibility: visible;
        }
    </style>
</body>

</html>